﻿Imports System.Text
Imports System.IO
Public Class frmToxicologico
    Inherits formPadrao
    Public WithEvents _ucPreambulo As New ucPreambulo
    Public WithEvents _ucDrogas As New ucDrogas
    Dim Sep As Char = ","
    Private preambuloTemp As ucPreambulo = Nothing
    Private nomeDiretorio As String = Nothing

    Private Sub _ucPreambulo_onClickGeraLaudos1(sender As Object, e As EventArgs) Handles _ucPreambulo.onClickGeraLaudos
        Try

            Dim nomeDiretorio As String = _ucPreambulo.txtLaudo.Text & "-QUI-" & _ucPreambulo.txtAno.Text

            If generica.diretorioExiste(nomeDiretorio) Then

                MsgBox("O laudo nº " & nomeDiretorio & " já existe gravado na pasta LAUDOSQUIMICALEGAL. Favor verficar o número do laudo")
                _ucPreambulo.txtLaudo.Focus()
                Exit Sub
            Else
                validaToxicologico()
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub _ucPreambulo_verWord(sender As Object, e As EventArgs) Handles _ucPreambulo.onClickVerWord
        Try
            Dim nomeDiretorio As String = _ucPreambulo.txtLaudo.Text & "-QUI-" & _ucPreambulo.txtAno.Text
            generica.visualizaWord(nomeDiretorio)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub verLaudo(ByVal nomeDiretorio As String)
        Try
            generica.visualizaWord(nomeDiretorio)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub _ucPreambulo_onClickCopiaDados(sender As Object, e As EventArgs) Handles _ucPreambulo.onClickCopiaDados
        Try
            _ucPreambulo = preambuloTemp
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub _ucPreambulo_onClickNovoLaudo(sender As Object, e As EventArgs) Handles _ucPreambulo.onClickNovoLaudo
        Try
            _ucPreambulo.limpaCampos()
            limpaCamposDrogas()
            limpaErros()
            _ucPreambulo.txtLaudo.Focus()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub validaToxicologico()
        Try
            If gridDrogas.RowCount = 0 Then
                MsgBox("Adicione pelo menos uma droga na tabela")
            Else
                If _ucPreambulo.validaCampos Then
                    geraLaudo()
                    preambuloTemp = _ucPreambulo
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub frmToxicologico_Load(sender As Object, e As EventArgs) Handles Me.Load
        Try
            Me.pnlPreambulo.Controls.Add(_ucPreambulo)
            Me.pnlResultado.Controls.Add(_ucDrogas)
            'preenche()
            cmbCor.SelectedIndex = -1
            cmbDescricao.SelectedIndex = -1

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub limpaCamposDrogas(Optional ByVal limpaMemoria As Boolean = False)
        cmbDescricao.SelectedIndex = -1
        cmbCor.SelectedIndex = -1
        cmbAcondicionamento.SelectedIndex = -1

        _ucDrogas.cmbDroga.SelectedIndex = -1
        txtQtdeUnidades.Text = String.Empty
        txtPesoDroga.Text = String.Empty
        chkSim.Checked = False
        txtPesoAmostra.Text = String.Empty
        txtlaudoPreliminar.Text = String.Empty
        txtDataLaudoPre.Text = String.Empty
        txtPesoDevolucao.Text = String.Empty

        If chkManterMem.Checked Then
            cmbInvEnvio.SelectedIndex = 2
            cmbInvDevolucao.SelectedIndex = 2
        Else
            cmbInvEnvio.SelectedIndex = -1
            cmbInvDevolucao.SelectedIndex = -1
        End If
      


        If Not chkManterMem.Checked Then
            txtInvDevolucao.Text = String.Empty
            txtInvEnvio.Text = String.Empty
        End If

        chkManterMem.Checked = limpaMemoria
        _ucPreambulo.btnVerWord.Visible = False
        pb.zeraContador()
        pb.txtMensagem.Text = String.Empty


    End Sub

    Private Sub limpaErros()
        erro.SetError(cmbDescricao, String.Empty)
        erro.SetError(cmbAcondicionamento, String.Empty)
        erro.SetError(cmbCor, String.Empty)
        erro.SetError(_ucDrogas, String.Empty)
        For Each controle In grpAcondicionamento.Controls
            erro.SetError(controle, String.Empty)
        Next

    End Sub

    Private Function validaCampos() As Boolean

        If _ucDrogas.getIndiceDroga < 0 Then
            erro.SetError(_ucDrogas, "Campo obrigatório")
            _ucDrogas.Focus()
            Return False
        Else
            erro.SetError(_ucDrogas, "")
        End If


        If (cmbDescricao.Text.Length = 0) Then
            erro.SetError(cmbDescricao, "Preenchimento obrigatório")
            cmbDescricao.Focus()
            Return False
        Else
            erro.SetError(cmbDescricao, "")
        End If
        If (cmbCor.Text.Length = 0) Then
            erro.SetError(cmbCor, "Preenchimento obrigatório")
            cmbCor.Focus()
            Return False
        Else
            erro.SetError(cmbCor, "")
        End If
        If (txtQtdeUnidades.Text.Length = 0) Then
            erro.SetError(txtQtdeUnidades, "Preenchimento obrigatório")
            txtQtdeUnidades.Focus()
            Return False
        Else
            erro.SetError(txtQtdeUnidades, "")
        End If
        If (cmbAcondicionamento.Text.Length = 0) Then
            erro.SetError(cmbAcondicionamento, "Preenchimento obrigatório")
            cmbAcondicionamento.Focus()
            Return False
        Else
            erro.SetError(cmbAcondicionamento, "")
        End If

        If txtPesoDroga.Text.Equals(String.Empty) Then
            erro.SetError(txtPesoDroga, "Campo obrigatório")
            txtPesoDroga.Focus()
            Return False
        Else
            erro.SetError(txtPesoDroga, "")
        End If

        If cmbInvEnvio.Text.Equals(String.Empty) Then
            erro.SetError(cmbInvEnvio, "Campo obrigatório")
            cmbInvEnvio.Focus()
            Return False
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If cmbInvEnvio.Text.Equals(String.Empty) Then
            erro.SetError(cmbInvEnvio, "Campo obrigatório")
            cmbInvEnvio.Focus()
            Return False
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
            If txtInvEnvio.Text.Equals(String.Empty) Then
                erro.SetError(txtInvEnvio, "Campo obrigatório")
                txtInvEnvio.Focus()
                Return False
            Else
                erro.SetError(txtInvEnvio, String.Empty)
            End If
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If txtPesoDevolucao.Text.Equals(String.Empty) Then
            If txtPesoDevolucao.Text.Equals(String.Empty) Then
                erro.SetError(txtPesoDevolucao, "Campo obrigatório")
                txtPesoDevolucao.Focus()
                Return False
            Else
                erro.SetError(txtPesoDevolucao, String.Empty)
            End If
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If cmbInvDevolucao.Text.Equals(String.Empty) Then
            erro.SetError(cmbInvDevolucao, "Campo obrigatório")
            cmbInvDevolucao.Focus()
            Return False
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If cmbInvDevolucao.Text.Equals("invólucro de segurança") Then
            If txtInvDevolucao.Text.Equals(String.Empty) Then
                erro.SetError(txtInvDevolucao, "Campo obrigatório")
                txtInvDevolucao.Focus()
                Return False
            Else
                erro.SetError(txtInvDevolucao, String.Empty)
            End If
        Else
            erro.SetError(cmbInvDevolucao, "")
        End If

        If chkSim.Checked Then

            If txtPesoAmostra.Text.Equals(String.Empty) Then
                erro.SetError(txtPesoAmostra, "Campo obrigatório")
                txtPesoAmostra.Focus()
                Return False
            Else
                erro.SetError(txtPesoAmostra, "")
            End If

            If txtlaudoPreliminar.Text.Equals(String.Empty) Then
                erro.SetError(txtlaudoPreliminar, "Campo obrigatório")
                txtlaudoPreliminar.Focus()
                Return False
            Else
                erro.SetError(txtlaudoPreliminar, "")
            End If

            If txtDataLaudoPre.Text.Equals(String.Empty) Then
                erro.SetError(txtDataLaudoPre, "Campo obrigatório")
                txtDataLaudoPre.Focus()
                Return False
            Else
                erro.SetError(txtDataLaudoPre, "")
            End If

        End If

        If CDbl(txtPesoDroga.Text) < CDbl(txtPesoDevolucao.Text) Then
            erro.SetError(txtPesoDroga, "O peso total da droga não pode ser menor que o peso da devolução")
            Return False
        Else
            erro.SetError(txtPesoDroga, String.Empty)
        End If
        Return True
    End Function


    Public Sub mudouIndiceComboDrogas(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ucDrogas.onSelectedIndexChanged
        Try
            If _ucDrogas.getIndiceDroga >= 0 Then
                txtQtdeUnidades.Focus()
                Select Case _ucDrogas.getDrogas.ToString
                    Case "MACONHA"
                        preencheDrogas(0, 4)
                    Case "COCAÍNA"
                        preencheDrogas(1, 1)
                    Case "CRACK"
                        preencheDrogas(0, 0)
                    Case Else
                        cmbDescricao.SelectedIndex = -1
                        cmbCor.SelectedIndex = -1
                        cmbDescricao.Focus()
                End Select
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub preencheDrogas(ByVal ind_descricao As Integer, ByVal ind_cor As Integer)
        cmbDescricao.SelectedIndex = ind_descricao
        cmbCor.SelectedIndex = ind_cor
    End Sub

    'Private Sub txtPesoDroga_KeyPress(sender As Object, e As KeyPressEventArgs)
    '    If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    'End Sub

    Private Sub btnAdicionar_Click_1(sender As Object, e As EventArgs) Handles btnAdicionar.Click
        Dim substancia As New StringBuilder
        Dim exame As New StringBuilder
        Dim acondicionamento As New StringBuilder
        Dim devolucao As New StringBuilder

        If validaCampos() Then

            '------------------------------------------------------------------------------------
            ' ALTERAÇÕES REALIZADAS DE ACORDO COM MANIFESTO DA SPTC
            '------------------------------------------------------------------------------------
            substancia.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            substancia.Append(cmbDescricao.Text).Append(" de coloração ").Append(cmbCor.Text).Append(" encaminhada em ").Append(txtQtdeUnidades.Text).Append("(")
            substancia.Append(generica.NumeroToExtenso(txtQtdeUnidades.Text)).Append(") ")
            substancia.Append(cmbAcondicionamento.Text).Append(", pesando ")
            substancia.Append(generica.extensoDecimalQuimicaLegal(CDec(txtPesoDroga.Text))).Append(". ")

            If Not chkSim.Checked Then
                substancia.Append("O material foi enviado a este laboratório para exames em ")
                If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
                    substancia.Append(cmbInvEnvio.Text).Append(" nº ").Append(txtInvEnvio.Text).Append(".")
                Else
                    substancia.Append(cmbInvEnvio.Text).Append(".")
                End If
            Else
                substancia.Append("Amostra de um total de ").Append(generica.extensoDecimalQuimicaLegal(CDec(txtPesoAmostra.Text)))
                substancia.Append(" conforme Laudo de constatação preliminar nº ").Append(txtlaudoPreliminar.Text).Append(", datado em ")
                'substancia.Append(generica.montaData(txtDataLaudoPre.Text).Append("."))
                substancia.Append(txtDataLaudoPre.Text).Append(".")
                substancia.Append(" O material foi enviado a este laboratório para exames em ")
                If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
                    substancia.Append(cmbInvEnvio.Text).Append(" nº ").Append(txtInvEnvio.Text).Append(".")
                Else
                    substancia.Append(cmbInvEnvio.Text).Append(".")
                End If
            End If

            '------------------------------------------------------------------------------------
            ' MONTA O TEXTO DA DEVOLUÇÃO DO MATERIAL
            '------------------------------------------------------------------------------------

            devolucao.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")

            Dim texto As String = CDbl(txtPesoDevolucao.Text)
            If texto.Equals("0,01") Or texto.Equals("1,00") Then
                devolucao.Append("Anexo, devolve-se ")
            Else
                devolucao.Append("Anexo, devolvem-se ")
            End If
            devolucao.Append(generica.extensoDecimalQuimicaLegal(CDbl(txtPesoDevolucao.Text))).Append(" do material descrito, em ")
            If cmbInvDevolucao.Text.Equals("invólucro de segurança") Then
                devolucao.Append(cmbInvDevolucao.Text).Append(" nº ").Append(txtInvDevolucao.Text).Append(".")
            Else
                devolucao.Append(cmbInvDevolucao.Text).Append(".")
            End If
            
            exame.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            exame.Append("realizadas as análises na substância descrita no ").Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(_ucDrogas.getResultado)
            acondicionamento.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            gridDrogas.Rows.Add(substancia.ToString, exame.ToString, devolucao.ToString, _ucDrogas.getDrogas, acondicionamento.ToString)

            substancia = Nothing
            exame = Nothing
            devolucao = Nothing
            acondicionamento = Nothing
            limpaCamposDrogas(True)
            limpaErros()
            pnlResultado.Focus()

            '  - erva acondicionada em um invólucro, pesando 1,09g (um grama e nove centigramas). 



        End If
    End Sub

    Private Sub cmbInvEnvio_LostFocus(sender As Object, e As EventArgs) Handles cmbInvEnvio.LostFocus
        If cmbInvEnvio.SelectedIndex >= 0 Then
            erro.SetError(cmbInvEnvio, String.Empty)
        End If
    End Sub

    Private Sub cmbInvEnvio_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles cmbInvEnvio.SelectedIndexChanged
        If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
            txtInvEnvio.Visible = True
        Else
            txtInvEnvio.Visible = False
        End If

        'If cmbInvEnvio.SelectedIndex >= 0 Then
        '    erro.SetError(cmbInvEnvio, String.Empty)
        'Else
        '    erro.SetError(cmbInvEnvio, " Campo obrigatório")
        'End If
    End Sub

    Private Sub txtPesoDroga_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPesoDroga.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
        If txtPesoDroga.Text.Length > 0 Then
            erro.SetError(txtPesoDroga, String.Empty)
        End If
    End Sub

    Private Sub chkSim_CheckedChanged(sender As Object, e As EventArgs) Handles chkSim.CheckedChanged

        pnlAmostra.Visible = chkSim.Checked

    End Sub

   
    Private Sub txtPesoAmostra_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtPesoAmostra.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
        If txtPesoAmostra.Text.Length = 0 Then
            erro.SetError(txtPesoAmostra, "Campo obrigatório")
            txtPesoAmostra.Focus()
        Else
            erro.SetError(txtPesoAmostra, String.Empty)
        End If
    End Sub
    Private Sub txtlaudoPreliminar_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtlaudoPreliminar.KeyPress
        If txtlaudoPreliminar.Text.Length = 0 Then
            erro.SetError(txtlaudoPreliminar, "Campo obrigatório")
            txtlaudoPreliminar.Focus()
        Else
            erro.SetError(txtlaudoPreliminar, String.Empty)
        End If
    End Sub

    Private Sub txtDataLaudoPre_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtDataLaudoPre.KeyPress
        If txtDataLaudoPre.Text.Length = 0 Then
            erro.SetError(txtDataLaudoPre, "Campo obrigatório")
            txtDataLaudoPre.Focus()
        Else
            erro.SetError(txtDataLaudoPre, String.Empty)
        End If
    End Sub

    Private Sub txtInvEnvio_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtInvEnvio.KeyPress
        If txtInvEnvio.Text.Length = 0 Then
            erro.SetError(txtInvEnvio, "Campo obrigatório")
            txtInvEnvio.Focus()
        Else
            erro.SetError(txtInvEnvio, String.Empty)
        End If
    End Sub

    Private Sub txtPesoDevolucao_KeyPress(sender As Object, e As KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True

        If txtPesoDevolucao.Text.Length = 0 Then
            erro.SetError(txtPesoDevolucao, "Campo obrigatório")
            txtPesoDevolucao.Focus()
        Else
            erro.SetError(txtPesoDevolucao, String.Empty)
        End If
    End Sub

    'Private Sub txtPesoDevolucao_LostFocus(sender As Object, e As EventArgs) Handles txtPesoDevolucao.LostFocus
    '    If CDbl(txtPesoDroga.Text) < CDbl(txtPesoDevolucao.Text) Then
    '        erro.SetError(txtPesoDevolucao, " O peso da devolução não pode ser maior que o peso da droga recebida")
    '        txtPesoDevolucao.Focus()
    '    Else
    '        erro.SetError(txtPesoDevolucao, String.Empty)
    '    End If
    'End Sub
    Private Sub txtQtdeUnidades_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtQtdeUnidades.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub cmbInvDevolucao_SelectedIndexChanged(sender As Object, e As EventArgs)
        If cmbInvDevolucao.Text.Equals("invólucro de segurança") Then
            txtInvDevolucao.Visible = True
        Else
            txtInvDevolucao.Visible = False
        End If
    End Sub
    Private Sub _ucPreambulo_onClickLimpaCampos(sender As Object, e As EventArgs) Handles _ucPreambulo.onClickLimpaCampos
        Try
            _ucPreambulo.limpaCampos()
            limpaCamposDrogas(False)
            gridDrogas.Rows.Clear()

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    ' --------------------------------------------------------------------------------------------------------------------------------
    ' ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------
    Private Sub geraLaudo()

        generica.tempo = Now

        Dim oWordTemp As New WordAppl
        pb.Visible = True
        '-----------------------------------------------------------------------------------------
        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
        '-----------------------------------------------------------------------------------------
        nomeDiretorio = generica.formataNumeroLaudo(_ucPreambulo.txtLaudo.Text) & "-QUI-" & _ucPreambulo.txtAno.Text
        pb.txtMensagem.Text = "Criando o diretório no qual o arquivo ficará armazenado"

       
            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")
            oWordTemp.OpenModelo("definitivo.doc")
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing
                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(_ucPreambulo)
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Criando o cabeçalho do documento word"
                '------------------------------------------------------------------------------------------------
                ' INSERE ITENS NA TABELA DO DOCUMENTO WORD
                '------------------------------------------------------------------------------------------------
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Inserindo informações no documento word criado"
                '------------------------------------------------------------------------------------------------
                ' VERIFICA SE O EXAME DEU POSITIVO
                '------------------------------------------------------------------------------------------------
                pb.txtMensagem.Text = "Processando o resultado dos exames"
            oWord.insereDadosDrogas(gridDrogas, 3, False)

                pb.txtMensagem.Text = "Criando a assinatura do laudo"
            oWord.criaAssinatura(_ucPreambulo)
            oWord.FindAndReplacement("<<iniciais>>", frmPrincipal.iniciais.ToString & "." & CDate(Now).ToShortDateString)
                pb.txtMensagem.Text = "Salvando o documento word criado"
                oWord.Save()
                pb.txtMensagem.Text = "Finalizando o documento"
                oWord.Quit()
                oWord = Nothing
            pb.stepBarra(10)

            If MsgBox("Laudo nº " & nomeDiretorio & " gerado com sucesso. Deseja visualizar o laudo gerado ?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
                verLaudo(nomeDiretorio)
            End If

            '-----------------------------------------------------------------
            ' LIMPA CAMPO DO FORMULÁRIO
            '----------------------------------------------------------------
            limpaCamposDrogas()
            limpaErros()
            _ucPreambulo.limpaCampos()
            pb.zeraContador()
            pb.txtMensagem.Text = String.Empty
            pb.Visible = False
            _ucPreambulo.txtLaudo.Focus()

                '------------------------------------------------------------------------------------
                ' CRIA ROTINA PARA VISUALIZAR O DOCUMENTO WORD GERADO
            ''------------------------------------------------------------------------------------
        Catch exc As Exception

            MsgBox("Erro :" & exc.StackTrace)
            generica.encerraProcessosWord()
            generica.gravaErro(exc)
            generica.rollBack(nomeDiretorio)
            limpaCamposDrogas()
            limpaErros()

            Exit Sub
        End Try
        pb.Visible = False
        pb.zeraContador()

    End Sub
    Private Sub preenche()
        _ucDrogas.cmbDroga.SelectedIndex = 1
        cmbDescricao.SelectedIndex = 1
        cmbCor.SelectedIndex = 1
        txtQtdeUnidades.Text = 12
        cmbAcondicionamento.SelectedIndex = 1
        txtPesoDroga.Text = "12,36"
        cmbInvEnvio.SelectedIndex = 1
        txtPesoDevolucao.Text = "11,45"
        cmbInvDevolucao.SelectedIndex = 1
    End Sub

    Private Sub chkManterMem_CheckedChanged(sender As Object, e As EventArgs) Handles chkManterMem.CheckedChanged
        If chkManterMem.Checked = False Then
            txtInvEnvio.Text = String.Empty
            txtInvDevolucao.Text = String.Empty
        End If
    End Sub
    Private Sub txtDataLaudoPre_LostFocus(sender As Object, e As EventArgs) Handles txtDataLaudoPre.LostFocus
        If chkSim.Checked Then
            If Not IsDate(txtDataLaudoPre.Text) Then
                erro.SetError(txtDataLaudoPre, "Data inválida")
                txtDataLaudoPre.Focus()
            Else
                erro.SetError(txtDataLaudoPre, String.Empty)
            End If
        End If
    End Sub

    Private Sub txtPesoDevolucao_KeyPress1(sender As Object, e As KeyPressEventArgs) Handles txtPesoDevolucao.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub cmbInvDevolucao_LostFocus(sender As Object, e As EventArgs) Handles cmbInvDevolucao.LostFocus
        If cmbInvDevolucao.SelectedIndex >= 0 Then
            erro.SetError(cmbInvDevolucao, String.Empty)
        End If
    End Sub

    Private Sub cmbInvDevolucao_SelectedIndexChanged1(sender As Object, e As EventArgs) Handles cmbInvDevolucao.SelectedIndexChanged
        If cmbInvDevolucao.Text.Equals("invólucro de segurança") Then
            txtInvDevolucao.Visible = True
        Else
            txtInvDevolucao.Visible = False
        End If
    End Sub
End Class